package Offer.offer2022;

import java.util.Stack;

/**
 * 两个栈实现队列
 * 栈是先进后出，队列是先进先出
 * 放的时候放在栈A，
 * 每次拿的时候，只要栈B不为空，则直接取栈B，栈B为空，则先把栈A的所有元素转移至栈B
 * 但是如果转移的过程中，栈A有新元素放入呢？
 *
 */
public class Test07 {

    public static Stack<Integer> stack1 = new Stack<>();
    public static Stack<Integer> stack2 = new Stack<>();

    public void add(int value) {
        stack1.push(value);
    }

    public int remove() {
        if (!stack2.isEmpty()) {
            return stack2.pop();
        } else {
            //先把stack1中的元素转入
            if (stack1.isEmpty()) {
                throw new RuntimeException("列表为空！");
            } else {
                while (!stack1.isEmpty()) {
                    stack2.push(stack1.pop());
                }
            }
            return stack2.pop();
        }
    }
}
